From: Alex Crichton Date: Thu, 1 Mar 2018 17:45:56 +0000 (-0800) Subject: Fold cargotest into testsuite X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~22^2~2^2~71^2~1 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=de70bc01dbf1414b7022ea2a1590c13fce3a4ad3;p=cargo.git Fold cargotest into testsuite Now that there's only one crate with integration tests there's no need to have this be a separate crate, yay! --- diff --git a/Cargo.toml b/Cargo.toml index ec9f99c2c..1b71cc797 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -80,7 +80,6 @@ features = [ [dev-dependencies] bufstream = "0.1" -cargotest = { path = "tests/testsuite/cargotest", version = "0.1" } filetime = "0.1" hamcrest = "=0.1.1" diff --git a/tests/testsuite/build_lib.rs b/tests/testsuite/build_lib.rs index 682b7c7e8..90a5a5097 100644 --- a/tests/testsuite/build_lib.rs +++ b/tests/testsuite/build_lib.rs @@ -1,4 +1,3 @@ -extern crate cargotest; extern crate hamcrest; use cargotest::support::{basic_bin_manifest, execs, project, Project}; diff --git a/tests/testsuite/cargotest/Cargo.toml b/tests/testsuite/cargotest/Cargo.toml deleted file mode 100644 index c02c441fd..000000000 --- a/tests/testsuite/cargotest/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "cargotest" -version = "0.1.0" -authors = ["Alex Crichton "] - -[lib] -path = "lib.rs" - -[dependencies] -cargo = { path = "../../.." } -filetime = "0.1" -flate2 = "1.0" -git2 = { version = "0.7", default-features = false } -hamcrest = "=0.1.1" -hex = "0.3" -log = "0.4" -serde_json = "1.0" -tar = { version = "0.4", default-features = false } -url = "1.1" diff --git a/tests/testsuite/cargotest/install.rs b/tests/testsuite/cargotest/install.rs index e768e040e..b9905ea24 100644 --- a/tests/testsuite/cargotest/install.rs +++ b/tests/testsuite/cargotest/install.rs @@ -2,7 +2,8 @@ use std::fmt; use std::path::{PathBuf, Path}; use hamcrest::{Matcher, MatchResult, existing_file}; -use support::paths; + +use cargotest::support::paths; pub use self::InstalledExe as has_installed_exe; diff --git a/tests/testsuite/cargotest/lib.rs b/tests/testsuite/cargotest/lib.rs deleted file mode 100644 index b29fde3f8..000000000 --- a/tests/testsuite/cargotest/lib.rs +++ /dev/null @@ -1,99 +0,0 @@ -#![deny(warnings)] - -extern crate cargo; -extern crate filetime; -extern crate flate2; -extern crate git2; -extern crate hamcrest; -extern crate hex; -#[macro_use] -extern crate serde_json; -extern crate tar; -extern crate url; - -use std::ffi::OsStr; -use std::time::Duration; - -use cargo::util::Rustc; -use std::path::PathBuf; - -pub mod support; -pub mod install; - -thread_local!(pub static RUSTC: Rustc = Rustc::new(PathBuf::from("rustc"), None).unwrap()); - -pub fn rustc_host() -> String { - RUSTC.with(|r| r.host.clone()) -} - -pub fn is_nightly() -> bool { - RUSTC.with(|r| { - r.verbose_version.contains("-nightly") || - r.verbose_version.contains("-dev") - }) -} - -pub fn process>(t: T) -> cargo::util::ProcessBuilder { - _process(t.as_ref()) -} - -fn _process(t: &OsStr) -> cargo::util::ProcessBuilder { - let mut p = cargo::util::process(t); - p.cwd(&support::paths::root()) - .env_remove("CARGO_HOME") - .env("HOME", support::paths::home()) - .env("CARGO_HOME", support::paths::home().join(".cargo")) - .env("__CARGO_TEST_ROOT", support::paths::root()) - - // Force cargo to think it's on the stable channel for all tests, this - // should hopefully not surprise us as we add cargo features over time and - // cargo rides the trains. - .env("__CARGO_TEST_CHANNEL_OVERRIDE_DO_NOT_USE_THIS", "stable") - - // For now disable incremental by default as support hasn't ridden to the - // stable channel yet. Once incremental support hits the stable compiler we - // can switch this to one and then fix the tests. - .env("CARGO_INCREMENTAL", "0") - - // This env var can switch the git backend from libgit2 to git2-curl, which - // can tweak error messages and cause some tests to fail, so let's forcibly - // remove it. - .env_remove("CARGO_HTTP_CHECK_REVOKE") - - .env_remove("__CARGO_DEFAULT_LIB_METADATA") - .env_remove("RUSTC") - .env_remove("RUSTDOC") - .env_remove("RUSTC_WRAPPER") - .env_remove("RUSTFLAGS") - .env_remove("XDG_CONFIG_HOME") // see #2345 - .env("GIT_CONFIG_NOSYSTEM", "1") // keep trying to sandbox ourselves - .env_remove("EMAIL") - .env_remove("MFLAGS") - .env_remove("MAKEFLAGS") - .env_remove("CARGO_MAKEFLAGS") - .env_remove("GIT_AUTHOR_NAME") - .env_remove("GIT_AUTHOR_EMAIL") - .env_remove("GIT_COMMITTER_NAME") - .env_remove("GIT_COMMITTER_EMAIL") - .env_remove("CARGO_TARGET_DIR") // we assume 'target' - .env_remove("MSYSTEM"); // assume cmd.exe everywhere on windows - return p -} - -pub trait ChannelChanger: Sized { - fn masquerade_as_nightly_cargo(&mut self) -> &mut Self; -} - -impl ChannelChanger for cargo::util::ProcessBuilder { - fn masquerade_as_nightly_cargo(&mut self) -> &mut Self { - self.env("__CARGO_TEST_CHANNEL_OVERRIDE_DO_NOT_USE_THIS", "nightly") - } -} - -pub fn cargo_process() -> cargo::util::ProcessBuilder { - process(&support::cargo_exe()) -} - -pub fn sleep_ms(ms: u64) { - std::thread::sleep(Duration::from_millis(ms)); -} diff --git a/tests/testsuite/cargotest/mod.rs b/tests/testsuite/cargotest/mod.rs new file mode 100644 index 000000000..8063126aa --- /dev/null +++ b/tests/testsuite/cargotest/mod.rs @@ -0,0 +1,89 @@ +use std::ffi::OsStr; +use std::time::Duration; + +use cargo::util::Rustc; +use cargo; +use std::path::PathBuf; + +#[macro_use] +pub mod support; + +pub mod install; + +thread_local!(pub static RUSTC: Rustc = Rustc::new(PathBuf::from("rustc"), None).unwrap()); + +pub fn rustc_host() -> String { + RUSTC.with(|r| r.host.clone()) +} + +pub fn is_nightly() -> bool { + RUSTC.with(|r| { + r.verbose_version.contains("-nightly") || + r.verbose_version.contains("-dev") + }) +} + +pub fn process>(t: T) -> cargo::util::ProcessBuilder { + _process(t.as_ref()) +} + +fn _process(t: &OsStr) -> cargo::util::ProcessBuilder { + let mut p = cargo::util::process(t); + p.cwd(&support::paths::root()) + .env_remove("CARGO_HOME") + .env("HOME", support::paths::home()) + .env("CARGO_HOME", support::paths::home().join(".cargo")) + .env("__CARGO_TEST_ROOT", support::paths::root()) + + // Force cargo to think it's on the stable channel for all tests, this + // should hopefully not surprise us as we add cargo features over time and + // cargo rides the trains. + .env("__CARGO_TEST_CHANNEL_OVERRIDE_DO_NOT_USE_THIS", "stable") + + // For now disable incremental by default as support hasn't ridden to the + // stable channel yet. Once incremental support hits the stable compiler we + // can switch this to one and then fix the tests. + .env("CARGO_INCREMENTAL", "0") + + // This env var can switch the git backend from libgit2 to git2-curl, which + // can tweak error messages and cause some tests to fail, so let's forcibly + // remove it. + .env_remove("CARGO_HTTP_CHECK_REVOKE") + + .env_remove("__CARGO_DEFAULT_LIB_METADATA") + .env_remove("RUSTC") + .env_remove("RUSTDOC") + .env_remove("RUSTC_WRAPPER") + .env_remove("RUSTFLAGS") + .env_remove("XDG_CONFIG_HOME") // see #2345 + .env("GIT_CONFIG_NOSYSTEM", "1") // keep trying to sandbox ourselves + .env_remove("EMAIL") + .env_remove("MFLAGS") + .env_remove("MAKEFLAGS") + .env_remove("CARGO_MAKEFLAGS") + .env_remove("GIT_AUTHOR_NAME") + .env_remove("GIT_AUTHOR_EMAIL") + .env_remove("GIT_COMMITTER_NAME") + .env_remove("GIT_COMMITTER_EMAIL") + .env_remove("CARGO_TARGET_DIR") // we assume 'target' + .env_remove("MSYSTEM"); // assume cmd.exe everywhere on windows + return p +} + +pub trait ChannelChanger: Sized { + fn masquerade_as_nightly_cargo(&mut self) -> &mut Self; +} + +impl ChannelChanger for cargo::util::ProcessBuilder { + fn masquerade_as_nightly_cargo(&mut self) -> &mut Self { + self.env("__CARGO_TEST_CHANNEL_OVERRIDE_DO_NOT_USE_THIS", "nightly") + } +} + +pub fn cargo_process() -> cargo::util::ProcessBuilder { + process(&support::cargo_exe()) +} + +pub fn sleep_ms(ms: u64) { + ::std::thread::sleep(Duration::from_millis(ms)); +} diff --git a/tests/testsuite/cargotest/support/cross_compile.rs b/tests/testsuite/cargotest/support/cross_compile.rs index fc274cb42..fca094ecf 100644 --- a/tests/testsuite/cargotest/support/cross_compile.rs +++ b/tests/testsuite/cargotest/support/cross_compile.rs @@ -3,7 +3,7 @@ use std::process::Command; use std::sync::{Once, ONCE_INIT}; use std::sync::atomic::{AtomicBool, ATOMIC_BOOL_INIT, Ordering}; -use support::{project, main_file, basic_bin_manifest}; +use cargotest::support::{project, main_file, basic_bin_manifest}; pub fn disabled() -> bool { // First, disable if ./configure requested so diff --git a/tests/testsuite/cargotest/support/git.rs b/tests/testsuite/cargotest/support/git.rs index 43a188ddd..2bac406e2 100644 --- a/tests/testsuite/cargotest/support/git.rs +++ b/tests/testsuite/cargotest/support/git.rs @@ -2,11 +2,11 @@ use std::fs::{self, File}; use std::io::prelude::*; use std::path::{Path, PathBuf}; -use url::Url; +use cargo::util::ProcessError; use git2; +use url::Url; -use cargo::util::ProcessError; -use support::{ProjectBuilder, Project, project, path2url}; +use cargotest::support::{ProjectBuilder, Project, project, path2url}; #[must_use] pub struct RepoBuilder { diff --git a/tests/testsuite/cargotest/support/mod.rs b/tests/testsuite/cargotest/support/mod.rs index 07e5f6f3c..754d3c96f 100644 --- a/tests/testsuite/cargotest/support/mod.rs +++ b/tests/testsuite/cargotest/support/mod.rs @@ -15,9 +15,8 @@ use hamcrest as ham; use cargo::util::ProcessBuilder; use cargo::util::{ProcessError}; -use support::paths::CargoPathExt; +use cargotest::support::paths::CargoPathExt; -#[macro_export] macro_rules! t { ($e:expr) => (match $e { Ok(e) => e, @@ -110,10 +109,6 @@ impl ProjectBuilder { self.root.root() } - pub fn build_dir(&self) -> PathBuf { - self.root.build_dir() - } - pub fn target_debug_dir(&self) -> PathBuf { self.root.target_debug_dir() } @@ -218,7 +213,7 @@ impl Project { } pub fn process>(&self, program: T) -> ProcessBuilder { - let mut p = ::process(program); + let mut p = ::cargotest::process(program); p.cwd(self.root()); return p } @@ -406,11 +401,6 @@ impl Execs { self } - pub fn with_neither_contains(mut self, expected: S) -> Execs { - self.expect_neither_contains.push(expected.to_string()); - self - } - pub fn with_json(mut self, expected: &str) -> Execs { self.expect_json = Some(expected.split("\n\n").map(|obj| { obj.parse().unwrap() @@ -803,31 +793,6 @@ pub fn execs() -> Execs { } } -#[derive(Clone)] -pub struct ShellWrites { - expected: String -} - -impl fmt::Display for ShellWrites { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "`{}` written to the shell", self.expected) - } -} - -impl<'a> ham::Matcher<&'a [u8]> for ShellWrites { - fn matches(&self, actual: &[u8]) - -> ham::MatchResult - { - let actual = String::from_utf8_lossy(actual); - let actual = actual.to_string(); - ham::expect(actual == self.expected, actual) - } -} - -pub fn shell_writes(string: T) -> ShellWrites { - ShellWrites { expected: string.to_string() } -} - pub trait Tap { fn tap(self, callback: F) -> Self; } diff --git a/tests/testsuite/cargotest/support/publish.rs b/tests/testsuite/cargotest/support/publish.rs index 63ab4b1e8..9e0b581f5 100644 --- a/tests/testsuite/cargotest/support/publish.rs +++ b/tests/testsuite/cargotest/support/publish.rs @@ -2,8 +2,8 @@ use std::path::PathBuf; use std::io::prelude::*; use std::fs::{self, File}; -use support::paths; -use support::git::{repo, Repository}; +use cargotest::support::paths; +use cargotest::support::git::{repo, Repository}; use url::Url; diff --git a/tests/testsuite/cargotest/support/registry.rs b/tests/testsuite/cargotest/support/registry.rs index 7283ad78a..321eb1bf0 100644 --- a/tests/testsuite/cargotest/support/registry.rs +++ b/tests/testsuite/cargotest/support/registry.rs @@ -3,6 +3,7 @@ use std::fs::{self, File}; use std::io::prelude::*; use std::path::{PathBuf, Path}; +use cargo::util::Sha256; use flate2::Compression; use flate2::write::GzEncoder; use git2; @@ -10,9 +11,8 @@ use hex; use tar::{Builder, Header}; use url::Url; -use support::paths; -use support::git::repo; -use cargo::util::Sha256; +use cargotest::support::paths; +use cargotest::support::git::repo; pub fn registry_path() -> PathBuf { paths::root().join("registry") } pub fn registry() -> Url { Url::from_file_path(&*registry_path()).ok().unwrap() } diff --git a/tests/testsuite/lib.rs b/tests/testsuite/lib.rs index 94f6e3f8c..b804ab0d0 100644 --- a/tests/testsuite/lib.rs +++ b/tests/testsuite/lib.rs @@ -1,22 +1,25 @@ -extern crate cargo; -#[macro_use] -extern crate cargotest; -extern crate hamcrest; -extern crate tempdir; extern crate bufstream; +extern crate cargo; +extern crate filetime; +extern crate flate2; extern crate git2; extern crate glob; -extern crate flate2; -extern crate tar; +extern crate hamcrest; +extern crate hex; extern crate libc; -#[cfg(windows)] -extern crate winapi; #[macro_use] extern crate serde_derive; +#[macro_use] extern crate serde_json; +extern crate tar; +extern crate tempdir; extern crate toml; extern crate url; +#[cfg(windows)] +extern crate winapi; +#[macro_use] +mod cargotest; mod alt_registry; mod bad_config; diff --git a/tests/testsuite/rename_deps.rs b/tests/testsuite/rename_deps.rs index f144acca2..cc8a28fa7 100644 --- a/tests/testsuite/rename_deps.rs +++ b/tests/testsuite/rename_deps.rs @@ -1,5 +1,3 @@ -extern crate cargo; -extern crate cargotest; extern crate hamcrest; use cargotest::support::{project, execs};